package com.javasm.common.dictionary;

import com.javasm.ProjectApplication;
import com.javasm.domin.entity.AftersaleType;
import com.javasm.mapper.AftersaleTypeMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

@Component
public class AfterinitContext {

    /**
     * 词典全局缓存对象
     * key : type 表示哪个类型
     * value中的hashMap中的key : 表示value value表示text文本
     */
    public static final Map<Integer, LinkedHashMap<Integer,String>> afdic = new HashMap<>();
    //ProjectApplication是当前springboot模块的启动类，Logger类是一个日志对象 作用是在缓存好词典后，在控制台提示一下
    Logger logger = LoggerFactory.getLogger(ProjectApplication.class);
    @Resource
    private AftersaleTypeMapper aftersaleTypeMapper;

    /**
     * 容器创建自动执行
     */
    @PostConstruct
    public void init(){
        initAftersaleType();
    }
    
    /**
     * 初始化词典
     */
    public void initAftersaleType(){
        List<AftersaleType> all = aftersaleTypeMapper.selectList(null);
        all.forEach(sysDictionary -> {
            LinkedHashMap<Integer, String> kv = afdic.get(sysDictionary.getParent());
            if(kv == null){
                kv = new LinkedHashMap<>();
            }
            kv.put(sysDictionary.getTypeId(),sysDictionary.getTypeName());
            afdic.put(sysDictionary.getParent(),kv);
        });
        //缓存完毕，logger对象在控制台打印下面的语句进行说明，可以不要
        logger.debug("词典初始化完成");

    }
}